home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / wics.zip / IBAR.CPP < prev    next >
C/C++ Source or Header  |  1993-03-03  |  5KB  |  236 lines

  1. //==============================================================================================
  2. //
  3. //    Windows Interface Construction Set
  4. //    Version 1.00
  5. //
  6. //    IBAR.CPP - Icon Bar Class
  7. //    Copyright ⌐ 1993 by Microdyne Development Technologies.
  8. //    All rights reserved.
  9. //==============================================================================================
  10.  
  11. #include <ibutton.h>
  12. #include <ibar.h>
  13. #include <wics.h>
  14.  
  15. BOOL FAR PASCAL FindChildWithId (HWND hWnd, LONG lParam);
  16.  
  17. TIconBar::TIconBar (PTWindowsObject AParent, WORD wHeight) :
  18.         TWindow (AParent, NULL)
  19. {
  20.     Attr.Id = 10;
  21.     Attr.Style = WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | WS_CLIPCHILDREN;
  22.     Attr.X = -1;
  23.     Attr.Y = -1;
  24.     Attr.W = 10;
  25.     Attr.H = ( wHeight ) ? wHeight : 25 ;
  26.  
  27.     SetFlags(WB_MDICHILD, FALSE);
  28.     pFontSelection = NULL;
  29.  
  30.     xPoint = 2 ;
  31.  
  32.     hBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
  33. }
  34.  
  35.  
  36. TIconBar::~TIconBar ()
  37. {
  38.     DeleteObject (hBrush);
  39. }
  40.  
  41. void TIconBar::GetWindowClass(WNDCLASS& WndClass)
  42. {
  43.     TWindow::GetWindowClass( WndClass );
  44.     WndClass.hbrBackground = GetStockObject (LTGRAY_BRUSH);
  45. }
  46.  
  47. void TIconBar::WMCtlColor (RTMessage Msg)
  48. {
  49.     Msg.Result = hBrush;
  50. }
  51.  
  52. void TIconBar::PlaceButton (WORD x, WORD y, WORD Id, BOOL fState)
  53. {
  54.     GetModule()->MakeWindow(new TIconBarButton (this, Id, x, y, fState));
  55. }
  56.  
  57. void TIconBar::PlaceButton (WORD Id, BOOL fState)
  58. {
  59.     PTIconBarButton    pButton ;
  60.  
  61.     GetModule()->MakeWindow((pButton = new TIconBarButton (this, Id, xPoint, 2, fState)));
  62.     xPoint += pButton->GetControlLength() - 1;
  63. }
  64.  
  65. typedef struct _FINDWINID
  66. {
  67.     WORD    Id;
  68.     HWND    hwnd;
  69. } FINDWINID;
  70.  
  71. BOOL FAR PASCAL FindChildWithId (HWND hWnd, LONG lParam)
  72. {
  73.     if (GetWindowWord (hWnd, GWW_ID) == ((FINDWINID FAR *)lParam)->Id)
  74.     {
  75.         ((FINDWINID FAR *)lParam)->hwnd = hWnd ;
  76.         return FALSE ;
  77.     }
  78.  
  79.     return TRUE;
  80. }
  81.  
  82. void TIconBar::RemoveControl (WORD Id)
  83. {
  84.     FINDWINID    FindWinId;
  85.     FARPROC      lpproc;
  86.  
  87.     FindWinId.Id = Id;
  88.     FindWinId.hwnd = NULL;
  89.  
  90.     lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
  91.     EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
  92.     FreeProcInstance (lpproc);
  93.  
  94.     if (FindWinId.hwnd != NULL)
  95.     {
  96.         SendMessage (FindWinId.hwnd, WM_CLOSE, 0, 0L);
  97.     }
  98. }
  99.  
  100. void TIconBar::SetButtonState (WORD Id, BOOL fState)
  101. {
  102.     FINDWINID    FindWinId;
  103.     FARPROC      lpproc;
  104.  
  105.     FindWinId.Id = Id;
  106.     FindWinId.hwnd = NULL;
  107.  
  108.     lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
  109.     EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
  110.     FreeProcInstance (lpproc);
  111.  
  112.     if (FindWinId.hwnd != NULL)
  113.     {
  114.         SendMessage (FindWinId.hwnd, BM_SETCHECK, (WPARAM) fState, 0L);
  115.     }
  116. }
  117.  
  118. BOOL TIconBar::IsButtonChecked (WORD Id)
  119. {
  120.     FINDWINID    FindWinId;
  121.     FARPROC      lpproc;
  122.  
  123.     FindWinId.Id = Id;
  124.     FindWinId.hwnd = NULL;
  125.  
  126.     lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
  127.     EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
  128.     FreeProcInstance (lpproc);
  129.  
  130.     if (FindWinId.hwnd != NULL)
  131.     {
  132.         return (BOOL) SendMessage (FindWinId.hwnd, BM_GETCHECK, 0, 0L);
  133.     }
  134.  
  135.     return FALSE;
  136. }
  137.  
  138. void TIconBar::Paint (HDC hdc, PAINTSTRUCT&)
  139. {
  140.     RECT    WndRect;
  141.  
  142.     GetClientRect (HWindow, &WndRect);
  143.     FrameRect (hdc, &WndRect, GetStockObject(BLACK_BRUSH));
  144. }
  145.  
  146. WORD TIconBar::GetHeight ()
  147. {
  148.     return Attr.H;
  149. }
  150.  
  151. void TIconBar::WMCommand (RTMessage msg)
  152. {
  153.     PostMessage (Parent->HWindow, msg.Message, msg.WParam, 0L);
  154. }
  155.  
  156. void TIconBar::WMSetFocus (RTMessage msg)
  157. {
  158.     SetFocus ((HWND) msg.WParam);
  159. }
  160.  
  161. void TIconBar::PlaceFontSelectionControl (WORD x, WORD y, WORD Id)
  162. {
  163.     GetModule()->MakeWindow((pFontSelection = new TFontSelect (this, Id, x, y)));
  164. }
  165.  
  166. void TIconBar::PlaceFontSelectionControl (WORD Id)
  167. {
  168.     GetModule()->MakeWindow((pFontSelection = new TFontSelect (this, Id, xPoint, 0)));
  169.     xPoint += pFontSelection->GetControlLength();
  170. }
  171.  
  172. void TIconBar::SetButtonCommandCode (WORD Id, WORD cmd)
  173. {
  174.     FINDWINID    FindWinId;
  175.     FARPROC      lpproc;
  176.  
  177.     FindWinId.Id = Id;
  178.     FindWinId.hwnd = NULL;
  179.  
  180.     lpproc = MakeProcInstance ((FARPROC)FindChildWithId, GetModule()->hInstance);
  181.     EnumChildWindows (HWindow, lpproc, (LONG) &FindWinId );
  182.     FreeProcInstance (lpproc);
  183.  
  184.     if (FindWinId.hwnd != NULL)
  185.     {
  186.         SendMessage (FindWinId.hwnd, WBM_SETCOMMANDCODE, (WPARAM) cmd, 0L);
  187.     }
  188. }
  189.  
  190. void TIconBar::GetSelectedFontFamilyName (WORD cchMax, LPSTR lpBuffer)
  191. {
  192.     if ( pFontSelection != NULL )
  193.         pFontSelection->GetFamilyName(cchMax, lpBuffer);
  194. }
  195.  
  196. void TIconBar::SetFontFamilyName (LPSTR lpBuffer)
  197. {
  198.     if ( pFontSelection != NULL )
  199.         pFontSelection->SetFamilyName (lpBuffer);
  200. }
  201.  
  202. void TIconBar::SetFontFamilyCommandCode (WORD code)
  203. {
  204.     if ( pFontSelection != NULL )
  205.         pFontSelection->SetFamilyCommandCode(code);
  206. }
  207.  
  208. int TIconBar::GetSelectedFontSize ()
  209. {
  210.     if ( pFontSelection != NULL )
  211.         return pFontSelection->GetFontSize();
  212.  
  213.     return 0;
  214. }
  215.  
  216. void TIconBar::SetFontSize (int s)
  217. {
  218.     if ( pFontSelection != NULL )
  219.         pFontSelection->SetFontSize(s) ;
  220. }
  221.  
  222. void TIconBar::SetFontSizeCommandCode (WORD code)
  223. {
  224.     if ( pFontSelection != NULL )
  225.         pFontSelection->SetFontSizeCommandCode(code);
  226. }
  227.  
  228. void TIconBar::SetFontStyle (LOGFONT FAR *lplf)
  229. {
  230.     if ( pFontSelection != NULL )
  231.     {
  232.         pFontSelection->SetFamilyName(lplf->lfFaceName);
  233.         pFontSelection->SetFontSize(lplf->lfHeight);
  234.     }
  235. }
  236.